home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / RKMLibsPrgs / samplelibrary / test / alibtest.asm < prev    next >
Assembly Source File  |  1992-09-03  |  3KB  |  115 lines

  1. ************************************************************************
  2. *  alibtest.asm -- Asm example that calls the Sample.library functions
  3. *
  4. *  Linkage Info:
  5. *  FROM     Astartup.obj, alibtest.o
  6. *  LIBRARY  LIB:amiga.lib, LIB:sample.lib
  7. *  TO       ALibTest
  8. *
  9. *
  10. * Copyright (c) 1992 Commodore-Amiga, Inc.
  11. *
  12. * This example is provided in electronic form by Commodore-Amiga, Inc. for
  13. * use with the "Amiga ROM Kernel Reference Manual: Libraries", 3rd Edition,
  14. * published by Addison-Wesley (ISBN 0-201-56774-1).
  15. *
  16. * The "Amiga ROM Kernel Reference Manual: Libraries" contains additional
  17. * information on the correct usage of the techniques and operating system
  18. * functions presented in these examples.  The source and executable code
  19. * of these examples may only be distributed in free electronic form, via
  20. * bulletin board or as part of a fully non-commercial and freely
  21. * redistributable diskette.  Both the source and executable code (including
  22. * comments) must be included, without modification, in any copy.  This
  23. * example may not be published in printed form or distributed with any
  24. * commercial product.  However, the programming techniques and support
  25. * routines set forth in these examples may be used in the development
  26. * of original executable software products for Commodore Amiga computers.
  27. *
  28. * All other rights reserved.
  29. *
  30. * This example is provided "as-is" and is subject to change; no
  31. * warranties are made.  All use is at your own risk. No liability or
  32. ************************************************************************
  33.  
  34.    INCLUDE   "exec/types.i"
  35.    INCLUDE   "exec/libraries.i"
  36.  
  37.    INCLUDE   "/sampleinclude/asmsupp.i"
  38.    INCLUDE   "/sampleinclude/samplebase.i"
  39.  
  40. ABSEXECBASE  EQU  4
  41.  
  42.    XDEF   _main
  43.  
  44.    XREF   _printf
  45.    XREF   _LVODouble
  46.    XREF   _LVOAddThese
  47.  
  48.    XLIB   OpenLibrary
  49.    XLIB   CloseLibrary
  50.  
  51.         section code
  52. _main:
  53.    ;------ open the test library: this will bring it in from disk
  54.    move.l   ABSEXECBASE,a6
  55.    lea      sampleName(pc),a1
  56.    moveq    #0,d0
  57.    jsr      _LVOOpenLibrary(a6)
  58.  
  59.    tst.l    d0
  60.    bne.s    1$
  61.  
  62.    ;------ couldn't find the library
  63.    pea      sampleName(pc)
  64.    pea      nolibmsg(pc)
  65.    jsr      _printf
  66.    addq.l   #8,sp
  67.  
  68.    bra      main_end
  69.  
  70. 1$:
  71.    move.l   d0,a6    ;sample.library base to a6
  72.  
  73.    ;------ print the library name, version, and revision
  74.    clr.l    d0
  75.    move.w   LIB_REVISION(a6),d0
  76.    move.l   d0,-(sp)
  77.    move.w   LIB_VERSION(a6),d0
  78.    move.l   d0,-(sp)
  79.    move.l   LN_NAME(a6),-(sp)
  80.    pea      verRevMsg(pc)
  81.    jsr      _printf           ;call Amiga.lib printf
  82.    adda.l   #16,sp            ;fix 4 long stack pushes
  83.  
  84.    ;------ call the first test function
  85.    moveq    #-7,d0
  86.    jsr      _LVODouble(a6)
  87.    move.l   d0,-(sp)
  88.    pea      doubleMsg(pc)
  89.    jsr      _printf
  90.    lea      8(sp),sp          ;fix 2 long stack pushes
  91.  
  92.    ;------ call the second test function
  93.    moveq    #21,d0
  94.    moveq    #4,d1
  95.    jsr      _LVOAddThese(a6)
  96.    move.l   d0,-(sp)
  97.    pea      addTheseMsg(pc)
  98.    jsr      _printf
  99.    lea      8(sp),sp
  100.  
  101.    ;------ close the library
  102.    move.l   a6,a1
  103.    move.l   ABSEXECBASE,a6
  104.    jsr      _LVOCloseLibrary(a6)
  105.  
  106. main_end:
  107.             rts
  108.  
  109. sampleName:  SAMPLENAME
  110. nolibmsg:    dc.b   'can not open library "%s"',10,0
  111. doubleMsg:   dc.b   'Function Double(-7) returned %ld',10,0
  112. addTheseMsg: dc.b   'Function AddThese(21,4) returned %ld',10,0
  113. verRevMsg:   dc.b   '%s   Version %ld   Revision %ld',10,0
  114.    END
  115.